home *** CD-ROM | disk | FTP | other *** search
/ AGA Toolkit '97 / The AGA Toolkit '97.iso / programming / gui / gadutil / include / libraries / gadutil.i < prev   
Encoding:
Text File  |  1996-09-07  |  17.2 KB  |  525 lines

  1.     IFND    LIBRARIES_GADUTIL_I
  2. LIBRARIES_GADUTIL_I          SET    1
  3. **------------------------------------------------------------------------**
  4. *
  5. *    $VER: gadutil.i 37.0 (29.04.96)
  6. *
  7. *    Filename:    libraries/gadutil.i
  8. *    Version:    37.0
  9. *    Date:        29-Apr-96
  10. *
  11. *    Gadutil definitions, a dynamic gadget layout system.
  12. *
  13. *    © Copyright 1994-1996 by P-O Yliniemi and Staffan Hämälä.
  14. *
  15. *    All Rights Reserved.
  16. *
  17. **------------------------------------------------------------------------**
  18.  
  19.     IFND    EXEC_TYPES_I
  20.     INCLUDE    'exec/types.i'
  21.     ENDC
  22.  
  23.     IFND    EXEC_LIBRARIES_I
  24.     include    "exec/libraries.i"
  25.     ENDC
  26.  
  27.     IFND    UTILITY_TAGITEM_I
  28.     INCLUDE    'utility/tagitem.i'
  29.     ENDC
  30.  
  31.     IFND    INTUITION_INTUITION_I
  32.     INCLUDE    'intuition/intuition.i'
  33.     ENDC    
  34.  
  35. **------------------------------------------------------------------------**
  36. *
  37. * Extended gadget types available in GadUtil.library.
  38. *
  39.  
  40. IMAGE_KIND:            equ    50
  41. LABEL_KIND:            equ    51            ; Not implemented
  42. DRAWER_KIND:        equ    52
  43. FILE_KIND:        equ    53
  44. BEVELBOX_KIND:        equ    54
  45. PROGRESS_KIND:        equ    55
  46.  
  47. **--------------- Minimum recommended sizes for some gadgets -------------**
  48. FILEKIND_WIDTH:        equ    20
  49. FILEKIND_HEIGHT:    equ    14
  50.  
  51. DRAWERKIND_WIDTH:    equ    20
  52. DRAWERKIND_HEIGHT:    equ    14
  53.  
  54. **----------------------- Bevel box frame types  -------------------------**
  55. BFT_BUTTON:        equ    0    ; Normal button bevel box border
  56. BFT_RIDGE:        equ    1    ; STRING_KIND bevel box border
  57. BFT_DROPBOX:        equ    2    ; Icon dropbox type border
  58.  
  59. BFT_HORIZBAR:        equ    10    ; Horizontal shadowed line
  60. BFT_VERTBAR:        equ    11    ; Vertical shadowed line
  61.  
  62. **------------------------- Text placement flags -------------------------**
  63. BB_TEXT_ABOVE:        equ    0    ; Place bevel box text above the
  64.                     ;  upper border     ___ Example ___
  65.  
  66. BB_TEXT_IN:        equ    1    ; Place bevel box text centered at
  67.                     ;  the upper border --- Example ---
  68.  
  69. BB_TEXT_BELOW:        equ    2    ; Place bevel box text below the
  70.                     ;  upper border     ___         ___
  71.                     ;                       Example
  72.  
  73. BB_TEXT_CENTER:        equ    0    ; Place the text centered at the
  74.                     ;  upper border (default)
  75.  
  76. BB_TEXT_LEFT:        equ    4    ; Place the text left adjusted
  77.  
  78. BB_TEXT_RIGHT:        equ    8    ; Place the text right adjusted
  79.  
  80. **----------------- Alternatives for text placement flags ----------------**
  81. BB_TEXT_ABOVE_CENTER:    equ    BB_TEXT_ABOVE!BB_TEXT_CENTER
  82. BB_TEXT_ABOVE_LEFT:    equ    BB_TEXT_ABOVE!BB_TEXT_LEFT
  83. BB_TEXT_ABOVE_RIGHT:    equ    BB_TEXT_ABOVE!BB_TEXT_RIGHT
  84.  
  85. BB_TEXT_IN_CENTER:    equ    BB_TEXT_IN!BB_TEXT_CENTER
  86. BB_TEXT_IN_LEFT:    equ    BB_TEXT_IN!BB_TEXT_LEFT
  87. BB_TEXT_IN_RIGHT:    equ    BB_TEXT_IN!BB_TEXT_RIGHT
  88.  
  89. BB_TEXT_BELOW_CENTER:    equ    BB_TEXT_BELOW!BB_TEXT_CENTER
  90. BB_TEXT_BELOW_LEFT:    equ    BB_TEXT_BELOW!BB_TEXT_LEFT
  91. BB_TEXT_BELOW_RIGHT:    equ    BB_TEXT_BELOW!BB_TEXT_RIGHT
  92.  
  93. **---------------------- Text shadow placement flags ---------------------**
  94. BB_SHADOW_DR:        equ    0    ; Place the shadow at x+1, y+1
  95. BB_SHADOW_UR:        equ    16    ; Place the shadow at x+1, y-1
  96. BB_SHADOW_DL:        equ    32    ; Place the shadow at x-1, y+1
  97. BB_SHADOW_UL:        equ    48    ; Place the shadow at x-1, y-1
  98.  
  99. **------------ Alternatives for text shadow placement flags --------------**
  100. BB_SUNAT_UL:        equ    0    ; Place the shadow at x+1, y+1
  101. BB_SUNAT_DL:        equ    16    ; Place the shadow at x+1, y-1
  102. BB_SUNAT_UR:        equ    32    ; Place the shadow at x-1, y+1
  103. BB_SUNAT_DR:        equ    48    ; Place the shadow at x-1, y-1
  104.  
  105. **------------------------------------------------------------------------**
  106. *
  107. * This is the structure that actually holds the definition of a single
  108. * gadget.  It contains the new layout tags defined below, as well as the
  109. * normal GadTools tags.  You setup all the gadgets in a window by
  110. * making an array of this structure and passing it to GU_LayoutGadgetsA().
  111. *
  112.     STRUCTURE LayoutGadget,0
  113.         WORD lg_GadgetID        ; Gadget ID
  114.         APTR lg_LayoutTags        ; struct TagItem ptr
  115.         APTR lg_GadToolsTags        ; struct TagItem ptr
  116.         APTR lg_Gadget            ; struct Gadget ptr
  117.     LABEL lg_SIZEOF
  118.  
  119. **------------------------------------------------------------------------**
  120. *
  121. * Structure used to hold the built in strings of a localized program. These
  122. * strings will be used if we couldn't get a string from the catalog.
  123. *
  124. *
  125.     STRUCTURE AppString,0
  126.         LONG    as_ID            ; String ID
  127.         LONG    as_Str            ; String pointer
  128.     LABEL as_SIZEOF
  129.  
  130. **------------------------------------------------------------------------**
  131. * A useful macro to fill a LayoutGadget structure.
  132. *
  133. * Usage:        GADGET  GadgetID,  Gad_LayoutTags,  Gad_GadToolsTags
  134. *
  135.  
  136. GADGET:    MACRO
  137.     dc.w    \1
  138.     dc.l    \2,\3,0
  139.     ENDM
  140.  
  141. LASTGAD: MACRO
  142.     dc.w    -1
  143.     dc.l    NULL,NULL,NULL
  144.     ENDM
  145.  
  146. **------------------------------------------------------------------------**
  147. * A macro to define a localized NewMenu structure
  148. *
  149. * Usage:        LOCMENU Type, Label ID, Flags, MutualExclude, UserData
  150. *
  151. * The string format for the label and shortcut key is:
  152. *
  153. *       SHORTCUTKEY, NULL, LABEL
  154. *
  155. * Use space for no shortcut.
  156. *
  157. * Examples:
  158. *
  159. * MNU_Edit_Cut:   dc.b  "X",0,"Cut"             ; Shortcut = Amiga X
  160. * MNU_Edit_Copy:  dc.b  "C",0,"Copy"            ; Shortcut = Amiga C
  161. * MNU_Edit_Paste: dc.b  "V",0,"Paste"           ; Shortcut = Amiga V
  162. * MNU_Edit_Erase: dc.b  " ",0,"Erase"           ; No shortcut
  163. *
  164.  
  165. LOCMENU: MACRO
  166.          dc.b    \1,0           ; Type, pad
  167.          dc.l    \2,0           ; Catalog string ID for label and cmd key
  168.          dc.w    \3             ; Flags
  169.          dc.l    \4,\5          ; MutualExclude, UserData
  170.          ENDM
  171.  
  172. **------------------------------------------------------------------------**
  173. *
  174. * Gadutil.library is basically an extension to Gadtools.library.  It adds
  175. * to GadTools the ability to dynamically layout gadgets according to the
  176. * positions of other gadgets, font size, locale, etc.  The goal in designing
  177. * this was to create a system so that programmers could easily create a GUI
  178. * that automatically adjusted to a user's environment.
  179. *
  180. * Every gadget is now defined as a TagList, there is no more need to make use
  181. * of the NewGadget structure as this taglist allows you to access all fields
  182. * used in that structure.  An array of the TagLists for all your window's
  183. * gadgets is then passed to GU_LayoutGadgetsA() and your gadget list is
  184. * created.
  185. *
  186.  
  187. GU_TagBase:    equ    TAG_USER+$60000
  188.  
  189. ************ Define which kind of gadget we are going to have. *************
  190.  
  191. GU_GadgetKind:    equ    GU_TagBase+1    ; Which kind of gadget to make.
  192.  
  193.  
  194. ********************** Gadget width control. *******************************
  195.  
  196. GU_Width:    equ    GU_TagBase+20    ; Absolute gadget width.
  197.  
  198. GU_DupeWidth:    equ    GU_TagBase+21    ; Duplicate the width of
  199.                     ;  another gadget
  200.  
  201. GU_AutoWidth:    equ    GU_TagBase+22    ; Set width according to length
  202.                     ;  of text label + ti_Data
  203.  
  204. GU_Columns:    equ    GU_TagBase+23    ; Set width so that approximately
  205.                     ;  ti_Data columns will fit.
  206.  
  207. GU_AddWidth:    equ    GU_TagBase+24    ; Add some value to the total
  208.                     ;  width calculation.
  209.  
  210. GU_MinWidth:    equ    GU_TagBase+25    ; Make sure width is at least this
  211.  
  212. GU_MaxWidth:    equ    GU_TagBase+26    ; Make sure width is at most this
  213.  
  214. GU_AddWidChar:    equ    GU_TagBase+27    ; Add length of ti_Data characters
  215.                     ;  to the gadget width
  216.  
  217. GU_FractWidth:    equ    GU_TagBase+28    ; Divide / multiply gadget width
  218.                     ;  with ti_Data
  219.  
  220. ********************** Gadget height control. ******************************
  221.  
  222. GU_Height:    equ    GU_TagBase+40    ; Absolute gadget height.
  223.  
  224. GU_DupeHeight:    equ     GU_TagBase+41    ; Duplicate the height of another
  225.                     ;  gadget.
  226.  
  227. GU_AutoHeight:    equ    GU_TagBase+42    ; Set height according to height
  228.                     ;  of text font + ti_Data.
  229.  
  230. GU_HeightFactor: equ    GU_TagBase+43    ; Make the gadget height a
  231.                     ;  multiple of the font height.
  232.  
  233. GU_AddHeight:    equ    GU_TagBase+44    ; Add some value to the total
  234.                     ;  height calculation
  235.  
  236. GU_MinHeight:    equ    GU_TagBase+45    ; Make sure height is at least this
  237.  
  238. GU_MaxHeight:    equ    GU_TagBase+46    ; Make sure height is at most this
  239.  
  240. GU_AddHeiLines:    equ    GU_TagBase+47    ; Add the height of ti_Data lines
  241.                     ;  to the gadget height
  242.  
  243. GU_FractHeight:    equ    GU_TagBase+48    ; Divide / multiply gadget height
  244.                     ;  with ti_Data
  245.  
  246. ******************** Gadget top edge control. ******************************
  247.  
  248. GU_Top:        equ    GU_TagBase+60    ; Absolute top edge.
  249.  
  250. GU_TopRel:    equ    GU_TagBase+61    ; Top edge relative to bottom
  251.                     ;  edge of another gadget.
  252.  
  253. GU_AddTop:    equ    GU_TagBase+62    ; Add some value to the final
  254.                      ;  top edge calculation.
  255.  
  256. GU_AlignTop:    equ    GU_TagBase+63    ; Align top edge of gadget with
  257.                     ;  top edge of another gadget.
  258.  
  259. GU_AdjustTop:    equ    GU_TagBase+64    ; Add the height of the text
  260.                     ;  font + ti_Data to the top edge.
  261.  
  262. GU_AddTopLines: equ    GU_TagBase+65    ; Add the height of ti_Data lines
  263.                     ;  to the top edge
  264.  
  265. ******************** Gadget bottom edge control. ***************************
  266.  
  267. GU_Bottom:    equ    GU_TagBase+80    ; Absolute bottom edge.
  268.  
  269. GU_BottomRel:    equ    GU_TagBase+81    ; Bottom edge relative to top
  270.                     ;  edge of another gadget.
  271.  
  272. GU_AddBottom:    equ    GU_TagBase+82    ; Add some value to the final
  273.                     ;  bottom edge calculation.
  274.  
  275. GU_AlignBottom:    equ    GU_TagBase+83    ; Align bottom edge of gadget with
  276.                     ;  bottom edge of another gadget.
  277.  
  278. GU_AdjustBottom: equ    GU_TagBase+84   ; Subtract the height of the text
  279.                                         ;  font + ti_Data from the top edge.
  280.  
  281. ************************ Gadget left edge control. *************************
  282.  
  283. GU_Left:    equ    GU_TagBase+100    ; Absolute left edge.
  284.  
  285. GU_LeftRel:    equ    GU_TagBase+101    ; Left edge relative to right
  286.                     ;  edge of another gadget.
  287.  
  288. GU_AddLeft:    equ    GU_TagBase+102    ; Add some value to the final
  289.                     ;  left edge calculation.
  290.  
  291. GU_AlignLeft:    equ    GU_TagBase+103    ; Align left edge of gadget with
  292.                     ;  left edge of another gadget.
  293.  
  294. GU_AdjustLeft:    equ    GU_TagBase+104    ; Add the width of the text
  295.                     ;  label + ti_Data to the left edge.
  296.  
  297. GU_AddLeftChar: equ    GU_TagBase+105    ; Add length of ti_Data characters
  298.                     ;  to the left edge.
  299.  
  300. *********************** Gadget right edge control. *************************
  301.  
  302. GU_Right:    equ    GU_TagBase+120    ; Absolute right edge.
  303.  
  304. GU_RightRel:    equ    GU_TagBase+121    ; Right edge relative to left
  305.                     ;  edge of another gadget.
  306.  
  307. GU_AddRight:    equ    GU_TagBase+122    ; Add some value to the final
  308.                     ;  right edge calculation.
  309.  
  310. GU_AlignRight:    equ    GU_TagBase+123    ; Align right edge of gadget with
  311.                     ;  right edge of another gadget.
  312.  
  313. GU_AdjustRight: equ     GU_TagBase+124  ; Subtract the width of the text
  314.                                         ; label + ti_Data from the left edge
  315.  
  316. ******************************** Other tags ********************************
  317.  
  318. GU_ToggleSelect: equ    GU_TagBase+150  ; Make the gadget toggleselect
  319.  
  320. GU_Selected:    equ     GU_TagBase+151  ; Change toggleselect default to
  321.                                         ;  selected.
  322.  
  323. ************ Access to the other fields of the NewGadget structure. ********
  324.  
  325. GU_GadgetText:    equ    GU_TagBase+160    ;  Gadget label. 
  326.  
  327. GU_TextAttr:    equ    GU_TagBase+161    ;  Desired font for gadget label.
  328.  
  329. GU_Flags:    equ    GU_TagBase+162    ;  Gadget flags.
  330.  
  331. GU_UserData:    equ    GU_TagBase+163    ;  Gadget UserData.
  332.  
  333. GU_LocaleText:    equ    GU_TagBase+164    ;  Gadget label taken from a locale.
  334.  
  335.  
  336. ***************** Tags for GadUtil's extended gadget kinds. ****************
  337.  
  338. GUIM_Image:    equ    GU_TagBase+200    ; Image structure for an image
  339.                     ;  gadget
  340.  
  341. GUIM_ReadOnly:    equ    GU_TagBase+201    ; TRUE if read-only. 
  342.  
  343. GUIM_SelectImg: equ     GU_TagBase+202  ; Other image for IMAGE_KIND gadgets.
  344.  
  345. GUIM_BOOPSILook: equ    GU_TagBase+203  ; Change the look of the selected
  346.                                         ;  image on one-image-buttons.
  347.  
  348. GUBD_Border:    equ    GU_TagBase+200    ; Border structure for an
  349.                     ;  border gadget
  350.  
  351. GUBD_ReadOnly:    equ    GU_TagBase+201    ; TRUE if read-only. 
  352.  
  353. GUBB_Recessed:    equ    GU_TagBase+220    ; TRUE for a recessed bevel box
  354.  
  355. GUBB_FrameType:    equ    GU_TagBase+221    ; Frame type for bevel box
  356.  
  357. GUBB_TextColor: equ    GU_TagBase+222    ; Color of title text above box
  358.  
  359. GUBB_TextPen:    equ    GU_TagBase+223    ; Pen to print title text with -
  360.                     ;  overrides GUBB_TextColor
  361. GUBB_Flags:    equ    GU_TagBase+224    ; Text placement flags
  362.  
  363. GUBB_3DText:    equ    GU_TagBase+225    ; Tag to enable 3D text (shadow)
  364.                     ;  Not needed if GU_ShadowColor or
  365.                     ;  GU_ShadowPen is used
  366.  
  367. GUBB_ShadowColor: equ    GU_TagBase+226    ; Color of the title text's shadow
  368.  
  369. GUBB_ShadowPen:    equ    GU_TagBase+227    ; Pen to print the text's shadow
  370.                     ;  with - overrides GUBB_ShadowColor
  371.  
  372. GUPR_FillColor:    equ    GU_TagBase+240    ; Color of filled part of indicator
  373.  
  374. GUPR_FillPen:    equ    GU_TagBase+241    ; Pen to fill the indicator with
  375.                     ;  - overrides GUPR_FillColor
  376.  
  377. GUPR_BackColor:    equ    GU_TagBase+242    ; Color of the background of the
  378.                     ;  indicator
  379.  
  380. GUPR_BackPen:    equ    GU_TagBase+243    ; Pen to use for the indocator's
  381.                     ;  background - overrides
  382.                     ;  GUPR_BackColor
  383.  
  384. GUPR_Current:    equ    GU_TagBase+244    ; Current value of the indicator
  385.  
  386. GUPR_Total:    equ    GU_TagBase+245    ; Total value for the indicator
  387.  
  388. ************** Tags passed directly to GU_LayoutGadgetsA(). ****************
  389.  
  390. GU_RightExtreme: equ    GU_TagBase+500    ; ti_Data is a pointer to a longword
  391.                     ;  that is used to store the right-
  392.                     ;  most point that a gadget will
  393.                     ;  exist in.
  394.  
  395. GU_LowerExtreme: equ    GU_TagBase+501    ; ti_Data is a pointer to a longword
  396.                     ;  that is used to store the lower-
  397.                     ;  most point that a gadget will
  398.                     ;  exist in.
  399.  
  400. GU_Catalog:    equ    GU_TagBase+502    ; Indicates locale for the gadgets. 
  401.  
  402. GU_DefTextAttr:    equ    GU_TagBase+503    ; Specifies a default font for use
  403.                     ;  with all gadgets, can still be
  404.                     ;  over-ridden with GU_TextAttr.
  405.  
  406. GU_AppStrings:    equ    GU_TagBase+504    ; Application string table w/IDs. 
  407.  
  408. GU_BorderLeft:    equ    GU_TagBase+505    ; Size of window left border. 
  409.  
  410. GU_BorderTop:    equ    GU_TagBase+506    ; Size of window top border. 
  411.  
  412. GU_NoCreate:    equ    GU_TagBase+507    ; Don't actually create the gadgets. 
  413.  
  414. GU_MinimumIDCMP: equ    GU_TagBase+508    ; Minimum required IDCMP, so that all
  415.                     ;  gadgets will work
  416.  
  417. ****************************** Hotkey tags ***********************************
  418.  
  419. GU_Hotkey:    equ    GU_TagBase+300    ; Hotkey for gadget (VANILLAKEY)
  420.  
  421. ********************* Boolean flags for hotkey code **************************
  422.  
  423. GU_HotkeyCase:    equ    GU_TagBase+301    ; TRUE for case sensitive hotkey
  424. GU_LabelHotkey:    equ    GU_TagBase+302    ; TRUE = get hotkey code from label
  425. GU_RawKey:    equ    GU_TagBase+303    ; TRUE if hotkey is a RAWKEY code
  426.  
  427. *********************** Constants for hotkey support ***********************
  428.  
  429. GADUSERMAGIC:    equ    $1122        ; Identification for structure
  430.  
  431. ******************** Public bit numbers for gu_Flags ***********************
  432.  
  433. GU_HOTKEYCASE:    equ    0        ; Hotkey is case-sensitive
  434. GU_RAWKEY:    equ    2        ; Hotkey is a RAWKEY code
  435.  
  436. ******************** Structure gg_UserData points to ***********************
  437. *
  438. * This structure is the public part of the allocated data structure for
  439. * hotkeys and IMAGE_KIND gadgets (including FILE_KIND and DRAWER_KIND).
  440. *
  441. * This structure should be considered READ ONLY. The only fields you may
  442. * change is the gu_Code and gu_Flags fields.
  443. *
  444. * DO NOT WRITE ANYTHING BEYOND THIS STRUCTURE WITHOUT ALLOCATING MEMORY FIRST
  445.  
  446.     STRUCTURE    GU_Public,0
  447.         WORD    gu_Magic    ; Identification word for structure
  448.         LONG    gu_GadFlags    ; Flags for GENERIC kind GadUtil gadgets
  449.         BYTE    gu_Flags    ; Flags for the hotkey type
  450.         BYTE    gu_Code        ; VANILLA or RAWKEY code to react on
  451.         WORD    gu_Active    ; Active entry for some gadget kinds
  452.         WORD    gu_MaxVal    ; Maximum value for some gadgets
  453.         WORD    gu_MinVal    ; Minimum value for some gadgets
  454.         LONG    gu_GadgetType    ; Gadget type that was created
  455.     LABEL    GUPU_SIZEOF
  456.  
  457.  
  458. **------------------------------------------------------------------------**
  459. **                  Library base                  **
  460. **------------------------------------------------------------------------**
  461.  
  462.     STRUCTURE    GadUtilBase,LIB_SIZE
  463.         UBYTE    gub_Flags        ; Private!
  464.         UBYTE    gub_pad            ; Private!
  465.  
  466.                 APTR    gub_GadToolsBase    ; The following library bases
  467.                 APTR    gub_GfxBase        ;  may be read and used by
  468.                 APTR    gub_IntBase        ;  your program
  469.                 APTR    gub_LocaleBase        ; LocaleBase may be NULL!
  470.                 APTR    gub_UtilityBase
  471.         APTR    gub_DiskFontBase    ; DiskFontBase may be NULL!
  472.  
  473.         LONG    gub_SegList        ; Private!
  474.     LABEL    GadUtilBase_SIZEOF
  475.  
  476.  
  477. GADUTILNAME:    MACRO
  478.         dc.b    "gadutil.library",0
  479.         ENDM
  480.  
  481. **------------------------------------------------------------------------**
  482. **                  BevelBox structure              **
  483. **------------------------------------------------------------------------**
  484.     STRUCTURE BBoxData,0
  485.         WORD    bbd_XPos        ; X position of box
  486.         WORD    bbd_YPos        ; Y position of box
  487.         WORD    bbd_Width        ; Width of box
  488.         WORD    bbd_Height        ; Height of box
  489.  
  490.         WORD    bbd_LeftEdge        ; Left edge of text
  491.         WORD    bbd_TopEdge        ; Top edge of text
  492.         WORD    bbd_TextWidth        ; Pixel width of text
  493.  
  494.         LONG    bbd_TextFont        ; Font to print text with
  495.         LONG    bbd_Text        ; Text to display
  496.         
  497.         BYTE    bbd_FrontPen        ; Text color
  498.         BYTE    bbd_Flags        ; Text placement flags
  499.         BYTE    bbd_Recessed        ; Recessed frame
  500.         BYTE    bbd_FrameType        ; Type of box frame
  501.         BYTE    bbd_ShadowPen        ; Shadow color
  502.         BYTE    bbd_Reserved1        ; No use in v36.53 - reserved!
  503.     LABEL bbd_SIZEOF
  504.  
  505. **------------------------------------------------------------------------**
  506. **              ProgressIndicator structure              **
  507. **------------------------------------------------------------------------**
  508.  
  509.     STRUCTURE ProgressGad,0
  510.         WORD    pg_XPos            ; X pos of box around gadget
  511.         WORD    pg_YPos            ; Y pos of box around gadget
  512.         WORD    pg_Width        ; Width of box around gadget
  513.         WORD    pg_Height        ; Height of box around gadget
  514.         LONG    pg_Current        ; Current value of indicator
  515.         LONG    pg_Total        ; Total value of indicator
  516.         BYTE    pg_FillColor        ; Color of upto current value
  517.         BYTE    pg_BackColor        ; Color from current to end
  518.         BYTE    pg_Flags        ; Flags
  519.         BYTE    pg_reserved1
  520.         WORD    pg_XFilledTo        ; Initialized to pg_XPos + 4
  521.  
  522.     LABEL pg_SIZEOF
  523.  
  524.     ENDC                            ; gadutil.i
  525.